#include <algorithm>
#include <vector>
#include <iostream>

using namespace std;

/**
 * [1, 4, 5] 
 * 1-寸头 1 分钟
 * 4-长头发 4 分钟
 * 5-烫头发 5 分钟
 * 
 * 0 + 1 + （4 + 1） = 6
 * 
 * [1, 5, 4]
 * 0 + 1 + （5 + 1） = 7
 * 
 * [3, 2, 1, 2, 6]
 * 1. 排序（从小到大）
 * 2. 计算总的等待时间
*/

int minimumWaitingTime(vector<int> tasks) {
  sort(tasks.begin(), tasks.end());

  int total = 0;

  // i - (tasks.size - 1)
  for (int i = 0; i < tasks.size(); ++i) {
    int duration = tasks[i]; // 当前位置的等待时间
    int tasksLeft = tasks.size() - (i + 1); // 当前位置下后面还剩余多少任务

    total += duration * tasksLeft; // 剩余任务的总等待时间
  }

  return total;
}

int main(int argc, char const *argv[])
{
  vector<int> tasks {3, 2, 1, 2, 6};
  cout<<minimumWaitingTime(tasks)<<endl;

  return 0;
}
